#include "admin.h"
#include <stdio.h>
#include <string.h>

#pragma once
/* 裁判员录入成绩用 admin.h 里面的 void inputResult(int sportCode, char* ID, int score, int statusCode)
  四个参数分别为项目编号、学号、得分、状态码。裁判录入时状态码取 0

  裁判审核直接调用 judgeReview()
*/

// 裁判审核
void judgeReview() {
    FILE* file = fopen("athlete.txt", "r");
    if (file == NULL) {
        printf("无法打开文件！\n");
        return;
    }

    // 用于存储记录
    char lines[100][100];
    int lineCount = 0;

    // 读取文件内容
    char line[100];
    while (fgets(line, sizeof(line), file) != NULL) {
        int projectCode, score, statusCode;
        char studentId[20];
        sscanf(line, "%d %d %d %s", &projectCode, &score, &statusCode, studentId);

        // 如果状态码是3，则打印并询问用户是否批准
        if (statusCode == 3) {
            char project_name[20];
            getGameNameByCode(projectCode, project_name);
            printf("比赛代号: %d, 比赛名：%s, 学号: %s ,得分: %d, \n", projectCode,project_name, studentId, score);

            char choice;
            printf("是否批准修改成绩? (y/n): ");
            scanf(" %c", &choice); // 使用空格跳过可能的换行符
            printf("\n");

            // 更新状态码
            if (choice == 'y' || choice == 'Y') {
                statusCode = 4;
            }
            else {
                statusCode = 5;
            }
        }

        // 将记录存储到数组中
        sprintf(lines[lineCount], "%d %d %d %s\n", projectCode, score, statusCode, studentId);
        lineCount++;
    }

    fclose(file); // 关闭读取的文件

    // 将记录写回文件
    file = fopen("athlete.txt", "w"); // 以写入模式打开文件
    if (file == NULL) {
        printf("无法打开文件进行写入！\n");
        return;
    }

    for (int i = 0; i < lineCount; i++) {
        fprintf(file, "%s", lines[i]); // 写入更新后的记录
    }

    fclose(file); // 关闭文件
    printf("所有审核请求已受理，暂无更多待审。\n");
}

